<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>chigraph: chi::Context Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="chigraphDoxygenIcon.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">chigraph
   &#160;<span id="projectnumber">master</span>
   </div>
   <div id="projectbrief">Systems programming language written for beginners in LLVM</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('structchi_1_1Context.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="structchi_1_1Context-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">chi::Context Struct Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>The class that handles the loading, creation, storing, and compilation of modules It also stores a <code>LLVMContext</code> object to be used everywhere.  
 <a href="structchi_1_1Context.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="Context_8hpp_source.html">chi/Context.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a9f68814e8a4fd38082c94be896347cc4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a9f68814e8a4fd38082c94be896347cc4">Context</a> (const boost::filesystem::path &amp;workPath={})</td></tr>
<tr class="memdesc:a9f68814e8a4fd38082c94be896347cc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a context with just the lang module.  <a href="#a9f68814e8a4fd38082c94be896347cc4">More...</a><br /></td></tr>
<tr class="separator:a9f68814e8a4fd38082c94be896347cc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5a1fe5450ee63fb78da8295a787c305"><td class="memItemLeft" align="right" valign="top"><a id="af5a1fe5450ee63fb78da8295a787c305"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Context</b> (const <a class="el" href="structchi_1_1Context.html">Context</a> &amp;context)=delete</td></tr>
<tr class="separator:af5a1fe5450ee63fb78da8295a787c305"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c006eca09d9f211463765d45ef0609c"><td class="memItemLeft" align="right" valign="top"><a id="a5c006eca09d9f211463765d45ef0609c"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Context</b> (<a class="el" href="structchi_1_1Context.html">Context</a> &amp;&amp;)=delete</td></tr>
<tr class="separator:a5c006eca09d9f211463765d45ef0609c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d2ae730b00104cbd6b60f33c05f4556"><td class="memItemLeft" align="right" valign="top"><a id="a8d2ae730b00104cbd6b60f33c05f4556"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a8d2ae730b00104cbd6b60f33c05f4556">~Context</a> ()</td></tr>
<tr class="memdesc:a8d2ae730b00104cbd6b60f33c05f4556"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a8d2ae730b00104cbd6b60f33c05f4556"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4a8f3fb758bbd0d1e0fdca431bdab2f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#af4a8f3fb758bbd0d1e0fdca431bdab2f">addModule</a> (std::unique_ptr&lt; <a class="el" href="structchi_1_1ChiModule.html">ChiModule</a> &gt; modToAdd) noexcept</td></tr>
<tr class="memdesc:af4a8f3fb758bbd0d1e0fdca431bdab2f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a custom module to the <a class="el" href="structchi_1_1Context.html" title="The class that handles the loading, creation, storing, and compilation of modules It also stores a LL...">Context</a>.  <a href="#af4a8f3fb758bbd0d1e0fdca431bdab2f">More...</a><br /></td></tr>
<tr class="separator:af4a8f3fb758bbd0d1e0fdca431bdab2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2db103f3a2f77710dfa51489f63ec97f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1Result.html">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a2db103f3a2f77710dfa51489f63ec97f">addModuleFromJson</a> (const boost::filesystem::path &amp;fullName, const nlohmann::json &amp;json, <a class="el" href="structchi_1_1GraphModule.html">GraphModule</a> **toFill=nullptr)</td></tr>
<tr class="memdesc:a2db103f3a2f77710dfa51489f63ec97f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load a module from JSON &ndash; avoid this use the string overload.  <a href="#a2db103f3a2f77710dfa51489f63ec97f">More...</a><br /></td></tr>
<tr class="separator:a2db103f3a2f77710dfa51489f63ec97f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43685d443899a5d086a3e89265e99cf6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1Result.html">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a43685d443899a5d086a3e89265e99cf6">compileModule</a> (const boost::filesystem::path &amp;fullName, <a class="el" href="structchi_1_1Flags.html">Flags</a>&lt; <a class="el" href="namespacechi.html#a5ebe31b8bd52ced63520fbfd749e757f">CompileSettings</a> &gt; settings, std::unique_ptr&lt; llvm::Module &gt; *toFill)</td></tr>
<tr class="memdesc:a43685d443899a5d086a3e89265e99cf6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compile a module to a <code>llvm::Module</code>.  <a href="#a43685d443899a5d086a3e89265e99cf6">More...</a><br /></td></tr>
<tr class="separator:a43685d443899a5d086a3e89265e99cf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae21e68cd2d6ec6a8d6923fa330b36827"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1Result.html">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#ae21e68cd2d6ec6a8d6923fa330b36827">compileModule</a> (<a class="el" href="structchi_1_1ChiModule.html">ChiModule</a> &amp;mod, <a class="el" href="structchi_1_1Flags.html">Flags</a>&lt; <a class="el" href="namespacechi.html#a5ebe31b8bd52ced63520fbfd749e757f">CompileSettings</a> &gt; settings, std::unique_ptr&lt; llvm::Module &gt; *toFill)</td></tr>
<tr class="memdesc:ae21e68cd2d6ec6a8d6923fa330b36827"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compile a module to a <code>llvm::Module</code>.  <a href="#ae21e68cd2d6ec6a8d6923fa330b36827">More...</a><br /></td></tr>
<tr class="separator:ae21e68cd2d6ec6a8d6923fa330b36827"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fd760dec52171aaf960e55ff08d9346"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="structchi_1_1NodeType.html">NodeType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a3fd760dec52171aaf960e55ff08d9346">createConverterNodeType</a> (const <a class="el" href="structchi_1_1DataType.html">DataType</a> &amp;fromType, const <a class="el" href="structchi_1_1DataType.html">DataType</a> &amp;toType)</td></tr>
<tr class="memdesc:a3fd760dec52171aaf960e55ff08d9346"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a converter node.  <a href="#a3fd760dec52171aaf960e55ff08d9346">More...</a><br /></td></tr>
<tr class="separator:a3fd760dec52171aaf960e55ff08d9346"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeec68d24b0031bd29cbc272c8b5fd415"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structchi_1_1NodeInstance.html">NodeInstance</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#aeec68d24b0031bd29cbc272c8b5fd415">findInstancesOfType</a> (const boost::filesystem::path &amp;moduleName, boost::string_view typeName) const</td></tr>
<tr class="memdesc:aeec68d24b0031bd29cbc272c8b5fd415"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find all uses of a node type in all the loaded modules.  <a href="#aeec68d24b0031bd29cbc272c8b5fd415">More...</a><br /></td></tr>
<tr class="separator:aeec68d24b0031bd29cbc272c8b5fd415"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79e291c879b4017b47ef9605e1e638ba"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a79e291c879b4017b47ef9605e1e638ba">hasWorkspace</a> () const noexcept</td></tr>
<tr class="memdesc:a79e291c879b4017b47ef9605e1e638ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if this context has a workspace bound to it &ndash; same as !workspacePath().empty()  <a href="#a79e291c879b4017b47ef9605e1e638ba">More...</a><br /></td></tr>
<tr class="separator:a79e291c879b4017b47ef9605e1e638ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab109ef2d751346da8db6d7c44fb0cd90"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1LangModule.html">LangModule</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#ab109ef2d751346da8db6d7c44fb0cd90">langModule</a> () const</td></tr>
<tr class="memdesc:ab109ef2d751346da8db6d7c44fb0cd90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the <code><a class="el" href="structchi_1_1LangModule.html" title="The module that provides built-in operations like literals, math operations, etc. ...">LangModule</a></code>, if it has been loaded.  <a href="#ab109ef2d751346da8db6d7c44fb0cd90">More...</a><br /></td></tr>
<tr class="separator:ab109ef2d751346da8db6d7c44fb0cd90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a16da32d939654600ac50084381e054"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a8a16da32d939654600ac50084381e054">listModulesInWorkspace</a> () const noexcept</td></tr>
<tr class="memdesc:a8a16da32d939654600ac50084381e054"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the list of modules in the workspace.  <a href="#a8a16da32d939654600ac50084381e054">More...</a><br /></td></tr>
<tr class="separator:a8a16da32d939654600ac50084381e054"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b0dca76be969f24e02a1d286aea377c"><td class="memItemLeft" align="right" valign="top">llvm::LLVMContext &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a8b0dca76be969f24e02a1d286aea377c">llvmContext</a> ()</td></tr>
<tr class="memdesc:a8b0dca76be969f24e02a1d286aea377c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the <code>LLVMContext</code>  <a href="#a8b0dca76be969f24e02a1d286aea377c">More...</a><br /></td></tr>
<tr class="separator:a8b0dca76be969f24e02a1d286aea377c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a844bdec56838399cb4d7a5f7ea223834"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1Result.html">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a844bdec56838399cb4d7a5f7ea223834">loadModule</a> (const boost::filesystem::path &amp;name, <a class="el" href="structchi_1_1ChiModule.html">ChiModule</a> **toFill=nullptr)</td></tr>
<tr class="memdesc:a844bdec56838399cb4d7a5f7ea223834"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load a module from disk, also loads dependencies.  <a href="#a844bdec56838399cb4d7a5f7ea223834">More...</a><br /></td></tr>
<tr class="separator:a844bdec56838399cb4d7a5f7ea223834"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8628a178e0a8a944065f2605d01a36d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1ChiModule.html">ChiModule</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a8628a178e0a8a944065f2605d01a36d5">moduleByFullName</a> (const boost::filesystem::path &amp;fullModuleName) const noexcept</td></tr>
<tr class="memdesc:a8628a178e0a8a944065f2605d01a36d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the module by the full name.  <a href="#a8628a178e0a8a944065f2605d01a36d5">More...</a><br /></td></tr>
<tr class="separator:a8628a178e0a8a944065f2605d01a36d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdf2d810191484be60d79abb03c5f7a7"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structchi_1_1ModuleCache.html">ModuleCache</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#afdf2d810191484be60d79abb03c5f7a7">moduleCache</a> () const</td></tr>
<tr class="memdesc:afdf2d810191484be60d79abb03c5f7a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the module cache.  <a href="#afdf2d810191484be60d79abb03c5f7a7">More...</a><br /></td></tr>
<tr class="separator:afdf2d810191484be60d79abb03c5f7a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36c12b871ae11ae59a5ec1f2f2842ec7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1ModuleCache.html">ModuleCache</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a36c12b871ae11ae59a5ec1f2f2842ec7">moduleCache</a> ()</td></tr>
<tr class="memdesc:a36c12b871ae11ae59a5ec1f2f2842ec7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the module cache.  <a href="#a36c12b871ae11ae59a5ec1f2f2842ec7">More...</a><br /></td></tr>
<tr class="separator:a36c12b871ae11ae59a5ec1f2f2842ec7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd60f2fe31d69d0c37652fb47fcf7b60"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structchi_1_1ChiModule.html">ChiModule</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#acd60f2fe31d69d0c37652fb47fcf7b60">modules</a> () const</td></tr>
<tr class="memdesc:acd60f2fe31d69d0c37652fb47fcf7b60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the modules in the <a class="el" href="structchi_1_1Context.html" title="The class that handles the loading, creation, storing, and compilation of modules It also stores a LL...">Context</a>.  <a href="#acd60f2fe31d69d0c37652fb47fcf7b60">More...</a><br /></td></tr>
<tr class="separator:acd60f2fe31d69d0c37652fb47fcf7b60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a906c9187e13e2194a3f68d48973529f6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1GraphModule.html">GraphModule</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a906c9187e13e2194a3f68d48973529f6">newGraphModule</a> (const boost::filesystem::path &amp;fullName)</td></tr>
<tr class="memdesc:a906c9187e13e2194a3f68d48973529f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new <a class="el" href="structchi_1_1GraphModule.html" title="Module that holds graph functions. ">GraphModule</a> with the given full name.  <a href="#a906c9187e13e2194a3f68d48973529f6">More...</a><br /></td></tr>
<tr class="separator:a906c9187e13e2194a3f68d48973529f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28706d36f049088c98cd726921512668"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1Result.html">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a28706d36f049088c98cd726921512668">nodeTypeFromModule</a> (const boost::filesystem::path &amp;moduleName, boost::string_view typeName, const nlohmann::json &amp;data, std::unique_ptr&lt; <a class="el" href="structchi_1_1NodeType.html">NodeType</a> &gt; *toFill) noexcept</td></tr>
<tr class="memdesc:a28706d36f049088c98cd726921512668"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a <a class="el" href="structchi_1_1NodeType.html" title="A generic node type. ">NodeType</a> from the JSON and name.  <a href="#a28706d36f049088c98cd726921512668">More...</a><br /></td></tr>
<tr class="separator:a28706d36f049088c98cd726921512668"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa70d187e69a7bbf85b6e48ea77bbb378"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#aa70d187e69a7bbf85b6e48ea77bbb378">setModuleCache</a> (std::unique_ptr&lt; <a class="el" href="structchi_1_1ModuleCache.html">ModuleCache</a> &gt; newCache)</td></tr>
<tr class="memdesc:aa70d187e69a7bbf85b6e48ea77bbb378"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the module cache.  <a href="#aa70d187e69a7bbf85b6e48ea77bbb378">More...</a><br /></td></tr>
<tr class="separator:aa70d187e69a7bbf85b6e48ea77bbb378"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e0b185a1871ebfda5d7bd410bf085f2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1Result.html">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a9e0b185a1871ebfda5d7bd410bf085f2">typeFromModule</a> (const boost::filesystem::path &amp;module, boost::string_view name, <a class="el" href="structchi_1_1DataType.html">DataType</a> *toFill) noexcept</td></tr>
<tr class="memdesc:a9e0b185a1871ebfda5d7bd410bf085f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a <a class="el" href="structchi_1_1DataType.html" title="A type of data Loose wrapper around llvm::Type*, except it knows which ChiModule it&#39;s in and it embed...">DataType</a> from a module.  <a href="#a9e0b185a1871ebfda5d7bd410bf085f2">More...</a><br /></td></tr>
<tr class="separator:a9e0b185a1871ebfda5d7bd410bf085f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17e4d810afed483542eafea5b36792c5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a17e4d810afed483542eafea5b36792c5">unloadModule</a> (const boost::filesystem::path &amp;fullName)</td></tr>
<tr class="memdesc:a17e4d810afed483542eafea5b36792c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unloads a module.  <a href="#a17e4d810afed483542eafea5b36792c5">More...</a><br /></td></tr>
<tr class="separator:a17e4d810afed483542eafea5b36792c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24fd4f52e8cc081116a45de3a698d846"><td class="memItemLeft" align="right" valign="top">boost::filesystem::path&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1Context.html#a24fd4f52e8cc081116a45de3a698d846">workspacePath</a> () const</td></tr>
<tr class="memdesc:a24fd4f52e8cc081116a45de3a698d846"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the workspace path of the <a class="el" href="structchi_1_1Context.html" title="The class that handles the loading, creation, storing, and compilation of modules It also stores a LL...">Context</a>.  <a href="#a24fd4f52e8cc081116a45de3a698d846">More...</a><br /></td></tr>
<tr class="separator:a24fd4f52e8cc081116a45de3a698d846"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The class that handles the loading, creation, storing, and compilation of modules It also stores a <code>LLVMContext</code> object to be used everywhere. </p>
<p>It stores all the modules and allows for compilation of them. Basic use looks like this:</p>
<div class="fragment"><div class="line"><a class="code" href="structchi_1_1Context.html">chi::Context</a> ctx{<span class="stringliteral">&quot;/path/to/workspace&quot;</span>};</div><div class="line"></div><div class="line">chi::Reuslt res = ctx.<a class="code" href="structchi_1_1Context.html#a844bdec56838399cb4d7a5f7ea223834">loadModule</a>(<span class="stringliteral">&quot;github.com/russelltg/hellochigraph&quot;</span>);</div><div class="line"><span class="keywordflow">if</span> (!res) {</div><div class="line">    std::cerr &lt;&lt; res &lt;&lt; std::endl;</div><div class="line">    <span class="keywordflow">return</span>;</div><div class="line">}</div></div><!-- fragment --> 
<p class="definition">Definition at line <a class="el" href="Context_8hpp_source.html#l00055">55</a> of file <a class="el" href="Context_8hpp_source.html">Context.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a9f68814e8a4fd38082c94be896347cc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f68814e8a4fd38082c94be896347cc4">&#9670;&nbsp;</a></span>Context()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">chi::Context::Context </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>workPath</em> = <code>{}</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates a context with just the lang module. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">workPath</td><td>Path to the workspace, or a subdirectory of the workspace </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00040">40</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">References <a class="el" href="Context_8cpp_source.html#l00462">chi::workspaceFromChildPath()</a>, and <a class="el" href="structchi_1_1Context.html#a8d2ae730b00104cbd6b60f33c05f4556">~Context()</a>.</p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a9f68814e8a4fd38082c94be896347cc4_cgraph.svg" width="399" height="88"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="af4a8f3fb758bbd0d1e0fdca431bdab2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4a8f3fb758bbd0d1e0fdca431bdab2f">&#9670;&nbsp;</a></span>addModule()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool chi::Context::addModule </td>
          <td>(</td>
          <td class="paramtype">std::unique_ptr&lt; <a class="el" href="structchi_1_1ChiModule.html">ChiModule</a> &gt;&#160;</td>
          <td class="paramname"><em>modToAdd</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Adds a custom module to the <a class="el" href="structchi_1_1Context.html" title="The class that handles the loading, creation, storing, and compilation of modules It also stores a LL...">Context</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">modToAdd</td><td>The module to add. The context will take excluseive ownership of it. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the module was added (it didn't exist before) </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00185">185</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">References <a class="el" href="Context_8cpp_source.html#l00048">moduleByFullName()</a>, and <a class="el" href="LangModule_8cpp_source.html#l00847">chi::LangModule::nodeTypeFromName()</a>.</p>

<p class="reference">Referenced by <a class="el" href="Context_8cpp_source.html#l00091">loadModule()</a>, and <a class="el" href="Context_8cpp_source.html#l00055">newGraphModule()</a>.</p>
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-1-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_af4a8f3fb758bbd0d1e0fdca431bdab2f_cgraph.svg" width="100%" height="378"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<div id="dynsection-2" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-2-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-2-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-2-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_af4a8f3fb758bbd0d1e0fdca431bdab2f_icgraph.svg" width="100%" height="385"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="a2db103f3a2f77710dfa51489f63ec97f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2db103f3a2f77710dfa51489f63ec97f">&#9670;&nbsp;</a></span>addModuleFromJson()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1Result.html">Result</a> chi::Context::addModuleFromJson </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>fullName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const nlohmann::json &amp;&#160;</td>
          <td class="paramname"><em>json</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structchi_1_1GraphModule.html">GraphModule</a> **&#160;</td>
          <td class="paramname"><em>toFill</em> = <code>nullptr</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Load a module from JSON &ndash; avoid this use the string overload. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">fullName</td><td>The full path of the module, including URL </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">json</td><td>The JSON data </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">toFill</td><td>The GraphModule* to fill into, optional </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="structchi_1_1Result.html" title="The result object, used for identifiying errors with good diagnostics. ">Result</a> </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00156">156</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">References <a class="el" href="Result_8hpp_source.html#l00123">chi::Result::addScopedContext()</a>, <a class="el" href="ChiModule_8hpp_source.html#l00061">chi::ChiModule::fullName()</a>, <a class="el" href="JsonDeserializer_8cpp_source.html#l00014">chi::jsonToGraphModule()</a>, <a class="el" href="Context_8cpp_source.html#l00048">moduleByFullName()</a>, and <a class="el" href="Context_8cpp_source.html#l00219">unloadModule()</a>.</p>

<p class="reference">Referenced by <a class="el" href="Context_8cpp_source.html#l00091">loadModule()</a>.</p>
<div id="dynsection-3" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-3-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-3-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-3-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a2db103f3a2f77710dfa51489f63ec97f_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<div id="dynsection-4" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-4-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-4-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-4-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a2db103f3a2f77710dfa51489f63ec97f_icgraph.svg" width="100%" height="385"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="a43685d443899a5d086a3e89265e99cf6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43685d443899a5d086a3e89265e99cf6">&#9670;&nbsp;</a></span>compileModule() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1Result.html">Result</a> chi::Context::compileModule </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>fullName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structchi_1_1Flags.html">Flags</a>&lt; <a class="el" href="namespacechi.html#a5ebe31b8bd52ced63520fbfd749e757f">CompileSettings</a> &gt;&#160;</td>
          <td class="paramname"><em>settings</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::unique_ptr&lt; llvm::Module &gt; *&#160;</td>
          <td class="paramname"><em>toFill</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Compile a module to a <code>llvm::Module</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">fullName</td><td>The full name of the module to compile. If <code>moduleByFullName(fullName) == nullptr</code>, this function has no side-effects </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">settings</td><td>The settings. See CompileSettings for more info </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">toFill</td><td>The <code>llvm::Module</code> to fill &ndash; this can be nullptr it will be replaced </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd>toFill isn't null (the value the unique_ptr points to be can be null, but not the pointer to the unique_ptr) </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>The <code><a class="el" href="structchi_1_1Result.html" title="The result object, used for identifiying errors with good diagnostics. ">Result</a></code> </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00284">284</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">References <a class="el" href="Result_8cpp_source.html#l00052">chi::Result::addEntry()</a>, and <a class="el" href="Context_8cpp_source.html#l00048">moduleByFullName()</a>.</p>

<p class="reference">Referenced by <a class="el" href="Context_8cpp_source.html#l00298">compileModule()</a>, and <a class="el" href="Debugger_8cpp_source.html#l00145">chi::Debugger::start()</a>.</p>
<div id="dynsection-5" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-5-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-5-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-5-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a43685d443899a5d086a3e89265e99cf6_cgraph.svg" width="100%" height="366"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<div id="dynsection-6" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-6-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-6-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-6-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a43685d443899a5d086a3e89265e99cf6_icgraph.svg" width="432" height="88"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ae21e68cd2d6ec6a8d6923fa330b36827"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae21e68cd2d6ec6a8d6923fa330b36827">&#9670;&nbsp;</a></span>compileModule() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1Result.html">Result</a> chi::Context::compileModule </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structchi_1_1ChiModule.html">ChiModule</a> &amp;&#160;</td>
          <td class="paramname"><em>mod</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structchi_1_1Flags.html">Flags</a>&lt; <a class="el" href="namespacechi.html#a5ebe31b8bd52ced63520fbfd749e757f">CompileSettings</a> &gt;&#160;</td>
          <td class="paramname"><em>settings</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::unique_ptr&lt; llvm::Module &gt; *&#160;</td>
          <td class="paramname"><em>toFill</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Compile a module to a <code>llvm::Module</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mod</td><td>The module to compile </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">settings</td><td>The settings. See CompileSettings for more details </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">toFill</td><td>The <code>llvm::Module</code> to fill &ndash; this can be nullptr it will be replaced </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code>toFill != nullptr</code> (the value the <code>unique_ptr</code> points to be can be null, but not the pointer to the <code>unique_ptr</code>) </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>The <code><a class="el" href="structchi_1_1Result.html" title="The result object, used for identifiying errors with good diagnostics. ">Result</a></code> </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00298">298</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">References <a class="el" href="Result_8cpp_source.html#l00052">chi::Result::addEntry()</a>, <a class="el" href="Result_8hpp_source.html#l00123">chi::Result::addScopedContext()</a>, <a class="el" href="structchi_1_1ModuleCache.html#acf93dc80687d0d13ebba4d3f5d215620">chi::ModuleCache::cacheModule()</a>, <a class="el" href="Context_8cpp_source.html#l00284">compileModule()</a>, <a class="el" href="ChiModule_8hpp_source.html#l00083">chi::ChiModule::dependencies()</a>, <a class="el" href="namespacechi.html#a895c4e199040694ef0c5984afa80af79">chi::executablePath()</a>, <a class="el" href="ChiModule_8hpp_source.html#l00061">chi::ChiModule::fullName()</a>, <a class="el" href="ChiModule_8hpp_source.html#l00064">chi::ChiModule::fullNamePath()</a>, <a class="el" href="structchi_1_1ChiModule.html#a987c71edb997c5f041f69622cb0c86fe">chi::ChiModule::generateModule()</a>, <a class="el" href="ChiModule_8hpp_source.html#l00101">chi::ChiModule::lastEditTime()</a>, <a class="el" href="namespacechi.html#a5ebe31b8bd52ced63520fbfd749e757fa4f2978dbcab4d04e98b1a567eae27604">chi::LinkDependencies</a>, <a class="el" href="Context_8hpp_source.html#l00173">llvmContext()</a>, <a class="el" href="Context_8cpp_source.html#l00048">moduleByFullName()</a>, <a class="el" href="Context_8hpp_source.html#l00191">moduleCache()</a>, <a class="el" href="BitcodeParser_8cpp_source.html#l00056">chi::parseBitcodeFile()</a>, <a class="el" href="structchi_1_1ModuleCache.html#a052da4f3f833549b36234932268d5e2c">chi::ModuleCache::retrieveFromCache()</a>, <a class="el" href="ChiModule_8hpp_source.html#l00058">chi::ChiModule::shortName()</a>, and <a class="el" href="namespacechi.html#a5ebe31b8bd52ced63520fbfd749e757fadcd9e587bf9e3e50e28d85f642306d33">chi::UseCache</a>.</p>
<div id="dynsection-7" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-7-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-7-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-7-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_ae21e68cd2d6ec6a8d6923fa330b36827_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="a3fd760dec52171aaf960e55ff08d9346"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3fd760dec52171aaf960e55ff08d9346">&#9670;&nbsp;</a></span>createConverterNodeType()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::unique_ptr&lt; <a class="el" href="structchi_1_1NodeType.html">NodeType</a> &gt; chi::Context::createConverterNodeType </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structchi_1_1DataType.html">DataType</a> &amp;&#160;</td>
          <td class="paramname"><em>fromType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structchi_1_1DataType.html">DataType</a> &amp;&#160;</td>
          <td class="paramname"><em>toType</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a converter node. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">fromType</td><td>The type to convert from </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toType</td><td>The type to convert to </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The node type, or nullptr </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00269">269</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">References <a class="el" href="DataType_8cpp_source.html#l00008">chi::DataType::qualifiedName()</a>.</p>
<div id="dynsection-8" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-8-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-8-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-8-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a3fd760dec52171aaf960e55ff08d9346_cgraph.svg" width="100%" height="404"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="aeec68d24b0031bd29cbc272c8b5fd415"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeec68d24b0031bd29cbc272c8b5fd415">&#9670;&nbsp;</a></span>findInstancesOfType()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; <a class="el" href="structchi_1_1NodeInstance.html">NodeInstance</a> * &gt; chi::Context::findInstancesOfType </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>moduleName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::string_view&#160;</td>
          <td class="paramname"><em>typeName</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Find all uses of a node type in all the loaded modules. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">moduleName</td><td>The name of the module that the type being search for is in </td></tr>
    <tr><td class="paramname">typeName</td><td>The name of the type in <code>module</code> to search for </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>All the <code><a class="el" href="structchi_1_1NodeInstance.html" title="An instance of a node. ">NodeInstance</a></code>s that are of that type </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00444">444</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="GraphStruct_8cpp_source.html#l00111">chi::GraphStruct::dataType()</a>, <a class="el" href="GraphModule_8cpp_source.html#l00581">chi::GraphModule::removeFunction()</a>, <a class="el" href="GraphStruct_8cpp_source.html#l00024">chi::GraphStruct::setName()</a>, and <a class="el" href="GraphFunction_8cpp_source.html#l00506">chi::GraphFunction::setName()</a>.</p>
<div id="dynsection-9" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-9-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-9-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-9-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_aeec68d24b0031bd29cbc272c8b5fd415_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="a79e291c879b4017b47ef9605e1e638ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a79e291c879b4017b47ef9605e1e638ba">&#9670;&nbsp;</a></span>hasWorkspace()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool chi::Context::hasWorkspace </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check if this context has a workspace bound to it &ndash; same as !workspacePath().empty() </p>
<dl class="section return"><dt>Returns</dt><dd>If it has a workspace </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8hpp_source.html#l00141">141</a> of file <a class="el" href="Context_8hpp_source.html">Context.hpp</a>.</p>

</div>
</div>
<a id="ab109ef2d751346da8db6d7c44fb0cd90"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab109ef2d751346da8db6d7c44fb0cd90">&#9670;&nbsp;</a></span>langModule()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1LangModule.html">LangModule</a>* chi::Context::langModule </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the <code><a class="el" href="structchi_1_1LangModule.html" title="The module that provides built-in operations like literals, math operations, etc. ...">LangModule</a></code>, if it has been loaded. </p>
<dl class="section return"><dt>Returns</dt><dd>The <code><a class="el" href="structchi_1_1LangModule.html" title="The module that provides built-in operations like literals, math operations, etc. ...">LangModule</a></code> </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8hpp_source.html#l00177">177</a> of file <a class="el" href="Context_8hpp_source.html">Context.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="FunctionCompiler_8cpp_source.html#l00275">chi::FunctionCompiler::createSubroutineType()</a>, and <a class="el" href="Context_8cpp_source.html#l00091">loadModule()</a>.</p>
<div id="dynsection-10" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-10-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-10-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-10-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_ab109ef2d751346da8db6d7c44fb0cd90_icgraph.svg" width="100%" height="397"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="a8a16da32d939654600ac50084381e054"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a16da32d939654600ac50084381e054">&#9670;&nbsp;</a></span>listModulesInWorkspace()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; std::string &gt; chi::Context::listModulesInWorkspace </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the list of modules in the workspace. </p>
<dl class="section return"><dt>Returns</dt><dd>The module list </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00068">68</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">References <a class="el" href="Context_8hpp_source.html#l00138">workspacePath()</a>.</p>
<div id="dynsection-11" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-11-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-11-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-11-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a8a16da32d939654600ac50084381e054_cgraph.svg" width="415" height="52"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a8b0dca76be969f24e02a1d286aea377c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b0dca76be969f24e02a1d286aea377c">&#9670;&nbsp;</a></span>llvmContext()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">llvm::LLVMContext&amp; chi::Context::llvmContext </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the <code>LLVMContext</code> </p>
<dl class="section return"><dt>Returns</dt><dd>The <code>LLVMContext</code> </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8hpp_source.html#l00173">173</a> of file <a class="el" href="Context_8hpp_source.html">Context.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="Context_8cpp_source.html#l00298">compileModule()</a>, <a class="el" href="GraphStruct_8cpp_source.html#l00111">chi::GraphStruct::dataType()</a>, <a class="el" href="LangModule_8cpp_source.html#l00529">chi::LangModule::LangModule()</a>, and <a class="el" href="LangModule_8cpp_source.html#l00871">chi::LangModule::typeFromName()</a>.</p>
<div id="dynsection-12" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-12-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-12-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-12-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a8b0dca76be969f24e02a1d286aea377c_icgraph.svg" width="100%" height="492"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="a844bdec56838399cb4d7a5f7ea223834"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a844bdec56838399cb4d7a5f7ea223834">&#9670;&nbsp;</a></span>loadModule()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1Result.html">Result</a> chi::Context::loadModule </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structchi_1_1ChiModule.html">ChiModule</a> **&#160;</td>
          <td class="paramname"><em>toFill</em> = <code>nullptr</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Load a module from disk, also loads dependencies. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>The name of the moudle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code>!name.empty()</code> to fetch all dependencies as well. Leave as default to only use local modules. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">toFill</td><td>The module that was loaded, optional </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The result </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00091">91</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">References <a class="el" href="Context_8cpp_source.html#l00185">addModule()</a>, <a class="el" href="Context_8cpp_source.html#l00156">addModuleFromJson()</a>, <a class="el" href="Result_8hpp_source.html#l00123">chi::Result::addScopedContext()</a>, <a class="el" href="Context_8hpp_source.html#l00177">langModule()</a>, <a class="el" href="Context_8cpp_source.html#l00048">moduleByFullName()</a>, <a class="el" href="ChiModule_8hpp_source.html#l00105">chi::ChiModule::updateLastEditTime()</a>, and <a class="el" href="Context_8hpp_source.html#l00138">workspacePath()</a>.</p>

<p class="reference">Referenced by <a class="el" href="ChiModule_8cpp_source.html#l00013">chi::ChiModule::addDependency()</a>.</p>
<div id="dynsection-13" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-13-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-13-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-13-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a844bdec56838399cb4d7a5f7ea223834_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<div id="dynsection-14" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-14-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-14-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-14-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a844bdec56838399cb4d7a5f7ea223834_icgraph.svg" width="100%" height="385"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="a8628a178e0a8a944065f2605d01a36d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8628a178e0a8a944065f2605d01a36d5">&#9670;&nbsp;</a></span>moduleByFullName()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1ChiModule.html">ChiModule</a> * chi::Context::moduleByFullName </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>fullModuleName</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Gets the module by the full name. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fullModuleName</td><td>The name of the module to find </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ret_module The module that has the full name <code>fullModuleName</code>, nullptr if none were found </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00048">48</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="Context_8cpp_source.html#l00185">addModule()</a>, <a class="el" href="Context_8cpp_source.html#l00156">addModuleFromJson()</a>, <a class="el" href="Context_8cpp_source.html#l00284">compileModule()</a>, <a class="el" href="Context_8cpp_source.html#l00091">loadModule()</a>, <a class="el" href="Debugger_8cpp_source.html#l00244">chi::Debugger::nodeFromFrame()</a>, <a class="el" href="Context_8cpp_source.html#l00253">nodeTypeFromModule()</a>, and <a class="el" href="Context_8cpp_source.html#l00232">typeFromModule()</a>.</p>
<div id="dynsection-15" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-15-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-15-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-15-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a8628a178e0a8a944065f2605d01a36d5_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="afdf2d810191484be60d79abb03c5f7a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afdf2d810191484be60d79abb03c5f7a7">&#9670;&nbsp;</a></span>moduleCache() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structchi_1_1ModuleCache.html">ModuleCache</a>&amp; chi::Context::moduleCache </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the module cache. </p>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="structchi_1_1ModuleCache.html" title="This class provides an interface for creating module caches. ">ModuleCache</a> </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8hpp_source.html#l00191">191</a> of file <a class="el" href="Context_8hpp_source.html">Context.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="Context_8cpp_source.html#l00298">compileModule()</a>.</p>
<div id="dynsection-16" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-16-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-16-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-16-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_afdf2d810191484be60d79abb03c5f7a7_icgraph.svg" width="424" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a36c12b871ae11ae59a5ec1f2f2842ec7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36c12b871ae11ae59a5ec1f2f2842ec7">&#9670;&nbsp;</a></span>moduleCache() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1ModuleCache.html">ModuleCache</a>&amp; chi::Context::moduleCache </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the module cache. </p>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="structchi_1_1ModuleCache.html" title="This class provides an interface for creating module caches. ">ModuleCache</a> </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8hpp_source.html#l00194">194</a> of file <a class="el" href="Context_8hpp_source.html">Context.hpp</a>.</p>

<p class="reference">References <a class="el" href="Context_8cpp_source.html#l00528">chi::interpretLLVMIR()</a>, <a class="el" href="Context_8cpp_source.html#l00564">chi::interpretLLVMIRAsMain()</a>, <a class="el" href="Context_8cpp_source.html#l00474">chi::stringifyLLVMType()</a>, and <a class="el" href="Context_8cpp_source.html#l00462">chi::workspaceFromChildPath()</a>.</p>
<div id="dynsection-17" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-17-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-17-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-17-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a36c12b871ae11ae59a5ec1f2f2842ec7_cgraph.svg" width="100%" height="442"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="acd60f2fe31d69d0c37652fb47fcf7b60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd60f2fe31d69d0c37652fb47fcf7b60">&#9670;&nbsp;</a></span>modules()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="structchi_1_1ChiModule.html">ChiModule</a>*&gt; chi::Context::modules </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the modules in the <a class="el" href="structchi_1_1Context.html" title="The class that handles the loading, creation, storing, and compilation of modules It also stores a LL...">Context</a>. </p>
<dl class="section return"><dt>Returns</dt><dd>The modules </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8hpp_source.html#l00181">181</a> of file <a class="el" href="Context_8hpp_source.html">Context.hpp</a>.</p>

</div>
</div>
<a id="a906c9187e13e2194a3f68d48973529f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a906c9187e13e2194a3f68d48973529f6">&#9670;&nbsp;</a></span>newGraphModule()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1GraphModule.html">GraphModule</a> * chi::Context::newGraphModule </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>fullName</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a new <a class="el" href="structchi_1_1GraphModule.html" title="Module that holds graph functions. ">GraphModule</a> with the given full name. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fullName</td><td>The new name </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The created <a class="el" href="structchi_1_1GraphModule.html" title="Module that holds graph functions. ">GraphModule</a> </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00055">55</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">References <a class="el" href="Context_8cpp_source.html#l00185">addModule()</a>.</p>

<p class="reference">Referenced by <a class="el" href="JsonDeserializer_8cpp_source.html#l00014">chi::jsonToGraphModule()</a>.</p>
<div id="dynsection-18" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-18-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-18-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-18-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a906c9187e13e2194a3f68d48973529f6_cgraph.svg" width="100%" height="378"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<div id="dynsection-19" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-19-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-19-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-19-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a906c9187e13e2194a3f68d48973529f6_icgraph.svg" width="100%" height="385"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="a28706d36f049088c98cd726921512668"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28706d36f049088c98cd726921512668">&#9670;&nbsp;</a></span>nodeTypeFromModule()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1Result.html">Result</a> chi::Context::nodeTypeFromModule </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>moduleName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::string_view&#160;</td>
          <td class="paramname"><em>typeName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const nlohmann::json &amp;&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::unique_ptr&lt; <a class="el" href="structchi_1_1NodeType.html">NodeType</a> &gt; *&#160;</td>
          <td class="paramname"><em>toFill</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Gets a <a class="el" href="structchi_1_1NodeType.html" title="A generic node type. ">NodeType</a> from the JSON and name. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">moduleName</td><td>The full module name. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">typeName</td><td>The name of the node type </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The JSON data that is used to construct the <a class="el" href="structchi_1_1NodeType.html" title="A generic node type. ">NodeType</a>. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">toFill</td><td>The point to fill </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code>toFill != nullptr</code> (the value the <code>unique_ptr</code> points to be can be null, but not the pointer to the <code>unique_ptr</code>) </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="structchi_1_1Result.html" title="The result object, used for identifiying errors with good diagnostics. ">Result</a> </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00253">253</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">References <a class="el" href="Result_8cpp_source.html#l00052">chi::Result::addEntry()</a>, and <a class="el" href="Context_8cpp_source.html#l00048">moduleByFullName()</a>.</p>

<p class="reference">Referenced by <a class="el" href="GraphFunction_8cpp_source.html#l00156">chi::GraphFunction::createEntryNodeType()</a>, <a class="el" href="GraphFunction_8cpp_source.html#l00174">chi::GraphFunction::createExitNodeType()</a>, <a class="el" href="GraphFunction_8cpp_source.html#l00100">chi::GraphFunction::insertNode()</a>, <a class="el" href="JsonDeserializer_8cpp_source.html#l00232">chi::jsonToGraphFunction()</a>, and <a class="el" href="GraphFunction_8cpp_source.html#l00506">chi::GraphFunction::setName()</a>.</p>
<div id="dynsection-20" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-20-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-20-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-20-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a28706d36f049088c98cd726921512668_cgraph.svg" width="100%" height="366"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<div id="dynsection-21" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-21-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-21-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-21-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a28706d36f049088c98cd726921512668_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="aa70d187e69a7bbf85b6e48ea77bbb378"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa70d187e69a7bbf85b6e48ea77bbb378">&#9670;&nbsp;</a></span>setModuleCache()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void chi::Context::setModuleCache </td>
          <td>(</td>
          <td class="paramtype">std::unique_ptr&lt; <a class="el" href="structchi_1_1ModuleCache.html">ModuleCache</a> &gt;&#160;</td>
          <td class="paramname"><em>newCache</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the module cache. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">newCache</td><td>The new module cache </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code>newCache != nullptr</code> </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00599">599</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

</div>
</div>
<a id="a9e0b185a1871ebfda5d7bd410bf085f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e0b185a1871ebfda5d7bd410bf085f2">&#9670;&nbsp;</a></span>typeFromModule()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1Result.html">Result</a> chi::Context::typeFromModule </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>module</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::string_view&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structchi_1_1DataType.html">DataType</a> *&#160;</td>
          <td class="paramname"><em>toFill</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Gets a <a class="el" href="structchi_1_1DataType.html" title="A type of data Loose wrapper around llvm::Type*, except it knows which ChiModule it&#39;s in and it embed...">DataType</a> from a module. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">module</td><td>The full name of the module </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>The name of the type, required </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">toFill</td><td>The type to fill </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code>toFill != nullptr</code> </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>The result </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00232">232</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">References <a class="el" href="Result_8cpp_source.html#l00052">chi::Result::addEntry()</a>, <a class="el" href="Context_8cpp_source.html#l00048">moduleByFullName()</a>, and <a class="el" href="structchi_1_1ChiModule.html#a03aa9f90fafd384094861dfff13eba77">chi::ChiModule::typeFromName()</a>.</p>

<p class="reference">Referenced by <a class="el" href="JsonDeserializer_8cpp_source.html#l00121">chi::createGraphFunctionDeclarationFromJson()</a>, <a class="el" href="GraphModule_8cpp_source.html#l00866">chi::GraphModule::createNodeTypeFromCCode()</a>, <a class="el" href="JsonDeserializer_8cpp_source.html#l00232">chi::jsonToGraphFunction()</a>, <a class="el" href="JsonDeserializer_8cpp_source.html#l00450">chi::jsonToGraphStruct()</a>, <a class="el" href="LangModule_8cpp_source.html#l00529">chi::LangModule::LangModule()</a>, and <a class="el" href="GraphModule_8cpp_source.html#l00606">chi::GraphModule::nodeTypeFromName()</a>.</p>
<div id="dynsection-22" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-22-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-22-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-22-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a9e0b185a1871ebfda5d7bd410bf085f2_cgraph.svg" width="100%" height="404"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<div id="dynsection-23" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-23-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-23-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-23-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a9e0b185a1871ebfda5d7bd410bf085f2_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="a17e4d810afed483542eafea5b36792c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a17e4d810afed483542eafea5b36792c5">&#9670;&nbsp;</a></span>unloadModule()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool chi::Context::unloadModule </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>fullName</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Unloads a module. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fullName</td><td>The full name of the module to unload </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if a module was unloaded </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8cpp_source.html#l00219">219</a> of file <a class="el" href="Context_8cpp_source.html">Context.cpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="Context_8cpp_source.html#l00156">addModuleFromJson()</a>.</p>
<div id="dynsection-24" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-24-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-24-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-24-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a17e4d810afed483542eafea5b36792c5_icgraph.svg" width="100%" height="385"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<a id="a24fd4f52e8cc081116a45de3a698d846"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24fd4f52e8cc081116a45de3a698d846">&#9670;&nbsp;</a></span>workspacePath()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::filesystem::path chi::Context::workspacePath </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the workspace path of the <a class="el" href="structchi_1_1Context.html" title="The class that handles the loading, creation, storing, and compilation of modules It also stores a LL...">Context</a>. </p>
<dl class="section return"><dt>Returns</dt><dd>The workspace path </dd></dl>

<p class="definition">Definition at line <a class="el" href="Context_8hpp_source.html#l00138">138</a> of file <a class="el" href="Context_8hpp_source.html">Context.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="DefaultModuleCache_8cpp_source.html#l00070">chi::DefaultModuleCache::cachePathForModule()</a>, <a class="el" href="JsonDeserializer_8cpp_source.html#l00014">chi::jsonToGraphModule()</a>, <a class="el" href="Context_8cpp_source.html#l00068">listModulesInWorkspace()</a>, <a class="el" href="Context_8cpp_source.html#l00091">loadModule()</a>, and <a class="el" href="GraphModule_8cpp_source.html#l00862">chi::GraphModule::sourceFilePath()</a>.</p>
<div id="dynsection-25" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-25-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-25-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-25-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1Context_a24fd4f52e8cc081116a45de3a698d846_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>

</div>
</div>
<hr/>The documentation for this struct was generated from the following files:<ul>
<li>lib/core/include/chi/<a class="el" href="Context_8hpp_source.html">Context.hpp</a></li>
<li>lib/core/src/<a class="el" href="Context_8cpp_source.html">Context.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacechi.html">chi</a></li><li class="navelem"><a class="el" href="structchi_1_1Context.html">Context</a></li>
    <li class="footer">Generated on Sat Sep 16 2017 17:41:35 for chigraph by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>
